package ar.edu.unq.model;

import java.util.HashMap;
import java.util.Map;

/**
 * Representa un Jugador
 * 
 * @author Nicolas Faure
 * 
 */
public class Jugador implements Nombrable {

    private String nombre;

    private int id;

    private Map<Posicion, Habilidad> habilidades = new HashMap<Posicion, Habilidad>();

    public Jugador() {
    }

    public Jugador(final String nombre, final int habilidadArquero, final int habilidadCentral,
            final int habilidadLateral, final int habilidadVolanteDefensivo, final int habilidadVolanteLateral,
            final int habilidadEnganche, final int habilidadMediaPunta, final int habilidadDelantero) {
        this.setNombre(nombre);
        // Establezco las habilidades
        this.addHabilidad(Posicion.Arquero, habilidadArquero);
        this.addHabilidad(Posicion.Central, habilidadCentral);
        this.addHabilidad(Posicion.Lateral, habilidadLateral);
        this.addHabilidad(Posicion.VolanteDefensivo, habilidadVolanteDefensivo);
        this.addHabilidad(Posicion.VolanteLateral, habilidadVolanteLateral);
        this.addHabilidad(Posicion.Enganche, habilidadEnganche);
        this.addHabilidad(Posicion.MediaPunta, habilidadMediaPunta);
        this.addHabilidad(Posicion.Delantero, habilidadDelantero);

    }

    protected void addHabilidad(final Posicion posicion, final int habilidad) {
        this.getHabilidades().put(posicion, new HabilidadImpl(posicion, habilidad));
    }

    /**
     * Devuelve la habilidad para una determinada posicion
     * 
     * @return Un int mayor o igual que cero que representa la habilidad
     */
    public int getValorHabilidad(final Posicion posicion) {
        return this.getHabilidades().get(posicion).getValor();

    }

    // Getters & Setters

    public String getNombre() {
        return this.nombre;
    }

    public void setNombre(final String nombre) {
        this.nombre = nombre;
    }

    protected void setHabilidades(final Map<Posicion, Habilidad> habilidades) {
        this.habilidades = habilidades;
    }

    protected Map<Posicion, Habilidad> getHabilidades() {
        return this.habilidades;
    }

    public void setId(final int id) {
        this.id = id;
    }

    public int getId() {
        return this.id;
    }

}
